/*
	File:		GamePlayState.h
	Course:		SGP 1302
	Author:		Peter Nguyen
	Purpose:	CGamePlayState handles the game play state
*/

#pragma once
#include "IGameState.h"
#include "../../SGD_Wrappers/SGD_String.h"
#include "../../SGD_Wrappers/CSGD_MessageSystem.h"
#include "../../SGD_Wrappers/IMessage.h"
#include "../../SGD_Wrappers/CSGD_ObjectFactory.h"
#include "../../source/GameObjects/Entity.h"
#include "../../SGD_Wrappers/ObjectManager.h"


class CSGD_Direct3D;
class CSGD_DirectInput;
class CSGD_TextureManager;
class CSGD_XAudio2;
class CSGD_EventSystem;
class CPlayer;
class SoundSystem;
class CPeon;

typedef CSGD_ObjectFactory< TSTRING, CEntity >	CSGD_Factory;


class CGamePlayState : public IGameState
{
public:
	//SINGLETON
	static CGamePlayState*	GetInstance( void );

	// IGameState Interface
	virtual		void	Enter	( void );
	virtual		void	Exit	( void );

	virtual		bool	Input	( void );
	virtual		void	Update	( float fElapsedTime );
	virtual		void	Render	( void );
	void HandleEvent(CEvent* pEvent);


	static void MessageProc( IMessage* pMsg );
	void SetLoad(int nLoad) { m_nSaveToLoad = nLoad;}




private:
	//Hidden constructors / destructors / assignment operator
	CGamePlayState(void);
	virtual ~CGamePlayState(void);
	CGamePlayState(const CGamePlayState& );
	CGamePlayState& operator= (const CGamePlayState& );

	//SGD Wrappers
	CSGD_Direct3D*			m_pD3D;
	CSGD_DirectInput*		m_pDI;
	CSGD_TextureManager*	m_pTM;
	CSGD_XAudio2*			m_pXA;
	CSGD_EventSystem*		m_pES;
	CSGD_MessageSystem*		m_pMS;
	CObjectManager*			m_pOM;
	

	SoundSystem *			m_pSS;
	//Assets
	int m_nColor;
	CPlayer* m_pPlayer;
	CPeon* m_pPeon;
	CPeon*	m_pPeon1;
	CPeon*	m_pPeon2;

	int m_nSaveToLoad; // which Gamer Profile am I loading?
	//Cursor member

	//Volume
	

	//sfx
	


	

};

